﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Entidades
{
    public class EntidadInvestigador : EntidadBase
    {
        private String nombreYApellido;
        private String dni;
        private String legajo;
        private String telefonoFijo;
        private String telefonoCelular;
        private String sitioWeb;
        private String mail;
        private String direccion;
        private String huella;
        private String @imagen;
        private EntidadBarrio barrio;
        private List<EntidadAsistencia> asistencias;
        private String userName;
        private String password;
        private bool? esEncargado;
        private List<EntidadPerfil> perfiles;
        private bool? activo;

        public EntidadInvestigador() 
        {
            this.barrio = new EntidadBarrio();
            this.nombreYApellido = "";
            this.dni = "";
            this.legajo = "";
            this.telefonoFijo = "";
            this.telefonoCelular = "";
            this.sitioWeb = "";
            this.mail = "";
            this.direccion = "";
            this.huella = "";
            this.imagen = "";
            this.asistencias = new List<EntidadAsistencia>();
            this.userName = "";
            this.password = "";
            this.esEncargado = true;
            this.perfiles = new List<EntidadPerfil>();
            this.activo = true;
        }
        public EntidadInvestigador(String nombreYApellido, String dni, String legajo, String telefonoFijo, String telefonoCelular,
                                   String sitioWeb, String mail, String direccion, String huella, String imagen, EntidadBarrio barrio, List<EntidadAsistencia> asistencias,
                                   String userName, String password, bool? esEncargado, List<EntidadPerfil> perfiles, bool? activo) 
        {
            this.nombreYApellido = nombreYApellido;
            this.dni = dni;
            this.legajo = legajo;
            this.telefonoFijo = telefonoFijo;
            this.telefonoCelular = telefonoCelular;
            this.sitioWeb = sitioWeb;
            this.mail = mail;
            this.direccion = direccion;
            this.huella = huella;
            this.imagen = @imagen;
            this.barrio = barrio;
            this.asistencias = asistencias;
            this.userName = userName;
            this.password = password;
            this.esEncargado = esEncargado;
            this.perfiles = perfiles;
            this.activo = activo;
        }

        public override bool esEntidadValida()
        {
            
            if (String.IsNullOrEmpty(this.nombreYApellido) || 
                String.IsNullOrEmpty(this.Legajo) ||
                String.IsNullOrEmpty(this.Dni) ||
                String.IsNullOrEmpty(this.Huella) ||
                barrio.Id == 0)
            {
                return false;
            }

            if (this.EsEncargado.Value)
            {
                if (String.IsNullOrEmpty(this.UserName) ||
                    String.IsNullOrEmpty(this.Password))
                {
                    return false;
                }
            }

            if (!String.IsNullOrEmpty(this.Mail) && !this.Mail.Contains("@"))
            {
                return false;
            }

            return true;
        }

        public override object[] obtainArray()
        {
            return new object[] { this.Id, this.nombreYApellido, this.Dni, this.Legajo, this.TelefonoFijo, 
                this.TelefonoCelular, this.SitioWeb, this.mail, this.Direccion, this.Huella, this.Imagen, this.UserName,
                this.Password, this.EsEncargado, this.Barrio.Id, this.activo };
        }

        #region getset

        public String NombreYApellido
        {
            get { return nombreYApellido.Trim(); }
            set { nombreYApellido = value; }
        }

        public String Dni 
        {
            get { return dni.Trim(); }
            set { dni = value; }
        }

        public String Legajo 
        {
            get { return legajo.Trim(); }
            set { legajo = value; }
        }

        public String TelefonoFijo 
        {
            get { return telefonoFijo.Trim(); }
            set { telefonoFijo = value; }
        }

        public String TelefonoCelular 
        {
            get { return telefonoCelular.Trim(); }
            set { telefonoCelular = value; }
        }

        public String SitioWeb 
        {
            get { return sitioWeb.Trim(); }
            set { sitioWeb = value; }
        }

        public String Mail 
        {
            get { return mail.Trim(); }
            set { mail = value; }
        }

        public String Direccion 
        {
            get { return direccion.Trim(); }
            set { direccion = value; }
        }

        public String Huella 
        {
            get { return huella.Trim(); }
            set { huella = value; }
        }

        public String Imagen
        {
            get { return imagen.Trim(); }
            set { imagen = value; }
        }

        public EntidadBarrio Barrio 
        {
            get { return barrio; }
            set { barrio = value; }
        }

        public List<EntidadAsistencia> Asistencias 
        {
            get { return asistencias; }
            set { asistencias = value; }
        }

        public String UserName 
        {
            get { return userName.Trim(); }
            set { userName = value; }
        }

        public String Password 
        {
            get { return password.Trim(); }
            set { password = value; }
        }

        public bool? EsEncargado
        {
            get { return esEncargado; }
            set { esEncargado = value; }
        }

        public List<EntidadPerfil> Perfiles 
        {
            get { return perfiles; }
            set { perfiles = value; }
        }

        public String NombreYLegajo 
        {
            get { return nombreYApellido.Trim() + " - " + legajo.Trim(); }
            set { ;}
        }

        public String LegajoYNombre
        {
            get { return legajo.Trim() + " - " + nombreYApellido.Trim(); }
            set { ;}
        }

        public bool? Activo
        {
            get { return activo; }
            set { activo = value; }
        }

        #endregion

    }
}
